package problem.year2023.month02;

import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author LiangMu
 * @version \$Id: Day28.java, v 0.1, 2023年02月28日 19:35 LiangMu Exp $$
 */
public class Day28 {
    public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int[] it : items1) {
            int key = it[0];
            int val = it[1];
            if (map.containsKey(key)) {
                map.put(key, map.get(key) + val);
            } else map.put(key, val);
        }
        for (int[] it : items2) {
            int key = it[0];
            int val = it[1];
            if (map.containsKey(key)) {
                map.put(key, map.get(key) + val);
            } else map.put(key, val);
        }
        return map.entrySet().stream().map(it -> List.of(it.getKey(), it.getValue())).collect(Collectors.toList());
    }

    public List<List<Integer>> mergeSimilarItems2(int[][] items1, int[][] items2) {
        return Stream.concat(Arrays.stream(items1), Arrays.stream(items2))
            .collect(Collectors.toMap(item -> item[0], item -> item[1], Integer::sum, TreeMap::new))
            .entrySet().stream().map(entry -> Arrays.asList(entry.getKey(), entry.getValue()))
            .collect(Collectors.toList());
    }
}
